package models

import (
	// 导入 Beego 2.x 核心包
	beego "github.com/beego/beego/v2/server/web"
	// 导入 Beego 2.x ORM 包
	"github.com/beego/beego/v2/client/orm"
	// 导入项目工具包（确保路径正确）
	"BlogProject/util"
	// MySQL 驱动
	_ "github.com/go-sql-driver/mysql"
	/*
		//1.x 版本
		"BlogProject/MysqlDemo/util"
		"github.com/astaxie/beego"
		"github.com/astaxie/beego/orm"
		//切记：导入驱动包
		_ "github.com/go-sql-driver/mysql"*/)

func init() {

	/*// 从配置文件读取数据库驱动名称
	driverName := beego.AppConfig.String("driverName")*/
	// 读取数据库驱动名称（处理两个返回值）
	driverName, err := beego.AppConfig.String("driverName")
	if err != nil {
		util.LogError("获取 driverName 配置失败: " + err.Error())
		return
	}

	//注册数据库驱动
	orm.RegisterDriver(driverName, orm.DRMySQL)

	// 读取数据库连接参数（均处理两个返回值）
	user, err := beego.AppConfig.String("mysqluser")
	if err != nil {
		util.LogError("获取 mysqluser 配置失败: " + err.Error())
		return
	}

	pwd, err := beego.AppConfig.String("mysqlpwd")
	if err != nil {
		util.LogError("获取 mysqlpwd 配置失败: " + err.Error())
		return
	}

	host, err := beego.AppConfig.String("host")
	if err != nil {
		util.LogError("获取 host 配置失败: " + err.Error())
		return
	}

	port, err := beego.AppConfig.String("port")
	if err != nil {
		util.LogError("获取 port 配置失败: " + err.Error())
		return
	}

	dbname, err := beego.AppConfig.String("dbname")
	if err != nil {
		util.LogError("获取 dbname 配置失败: " + err.Error())
		return
	}

	/*
		// 读取数据库连接参数
		user := beego.AppConfig.String("mysqluser") //数据库用户名
		pwd := beego.AppConfig.String("mysqlpwd")   //数据库密码
		host := beego.AppConfig.String("host")      //数据库地址
		port := beego.AppConfig.String("port")      //数据库端口
		dbname := beego.AppConfig.String("dbname")  //数据库名称
	*/

	// 构建数据库连接字符串
	//dbConn := "root:yu271400@tcp(127.0.0.1:3306)/cmsproject?charset=utf8"
	dbConn := user + ":" + pwd + "@tcp(" + host + ":" + port + ")/" + dbname + "?charset=utf8"

	// 注册数据库连接
	//第一个参数是连接的别名，第二个参数是驱动名称，第三个参数是连接字符串
	err = orm.RegisterDataBase("default", driverName, dbConn)
	if err != nil {
		// 日志输出（使用你项目中的 LogError 工具）
		util.LogError("连接数据库出错")
		return
	}
	util.LogInfo("连接数据库成功")
}
